/* Copyright (c) 2009, Antonie Jovanoski
 *	
 * All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "qtwitfriends.h"

QTwitFriends::QTwitFriends(QObject *parent)
	:	QTwitBase(parent)
{
}

QStringList QTwitFriends::getFriends() const
{
	return m_friends;
}

void QTwitFriends::updateFriends()
{
	QNetworkRequest req(QUrl("https://twitter.com/statuses/friends.xml"));
	m_netManager.get(req);
}

void QTwitFriends::updateFriends(int id)
{
	QString urlString = QString("http://twitter.com/statuses/friends/%1.xml").arg(id);
	QUrl url(urlString);
	QNetworkRequest req(url);
	m_netManager.get(req);
}

//TODO: More friends then 100, with page parameter

void QTwitFriends::updateFriends(const QString &screenName)
{
	QString urlString = QString("http://twitter.com/statuses/friends/%1.xml").arg(screenName);
	QUrl url(urlString);
	QNetworkRequest req(url);
	m_netManager.get(req);
}

void QTwitFriends::reply(QNetworkReply *reply)
{
	if(reply->error() != QNetworkReply::NoError)
		return;
	/*
	QByteArray output = reply->readAll();

	QBuffer outputBuffer(&output);
	outputBuffer.open(QIODevice::ReadOnly);
	
	QXmlQuery query;
	query.bindVariable("inputDocument", &outputBuffer);
	query.setQuery("declare variable $inputDocument external; doc($inputDocument)/users/user/string(screen_name)");

	m_friends.clear();

	if(!query.evaluateTo(&m_friends))
		return;
	*/
	reply->deleteLater();

	emit finished();
}
